/*
 * Copyright© 2003-2019 浙江汇信科技有限公司, All Rights Reserved.
 */
package com.icinfo.cloud.provider.punish.service;

import com.alibaba.fastjson.JSONArray;
import com.icinfo.cloud.common.core.page.PageResponse;
import com.icinfo.cloud.provider.common.service.PunishBaseService;
import com.icinfo.cloud.provider.punish.common.documentoperate.dto.FillAndConvertToPdfRequest;
import com.icinfo.cloud.provider.punish.common.documentoperate.vo.DocumentCommonFormDataVo;
import com.icinfo.cloud.provider.punish.common.documentoperate.vo.DocumentCommonFormHtmlVo;
import com.icinfo.cloud.provider.punish.common.seal.dto.FileSealInfoQueryDto;
import com.icinfo.cloud.provider.punish.config.model.ConfigBusiParamDocumentInfo;
import com.icinfo.cloud.provider.punish.dto.*;
import com.icinfo.cloud.provider.punish.vo.*;
import com.icinfo.framework.common.web.Result;
import com.icinfo.framework.core.service.BaseService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * 描述: 案件文书记录表-TRJ app_case_before_document_record 对应的Service接口.<br>
 *
 * @author framework generator
 * @date 2022年04月12日
 */
public interface IAppCaseBeforeDocumentRecordService extends BaseService, PunishBaseService {
    /**
     * 文书数据保存
     *
     * @param saveDto
     * @return
     */
    Map<String, Object> saveDocInfo(AppDocumentCommonSaveDto saveDto);

    /**
     * 获取文书模板
     *
     * @param request
     * @return
     */
    DocumentCommonFormHtmlVo getDocumentFormHtml(DocCommonHtmlRequest request);

    /**
     * 获取文书内容
     *
     * @param dto
     * @return
     */
    DocumentCommonFormDataVo getCommonDocumentFormData(DocCommonHtmlRequest dto);

    /**
     * 办案直通车-常用文书列表
     *
     * @return
     */
    List<AppDocumentListSimpleVo> getCommonlyUseDocumentList();

    /**
     * 办案直通车-全部文书列表
     *
     * @param
     * @return
     */
    List<AppDocumentListSimpleVo> getAllDocumentList();

    /**
     * 查询历史文书
     *
     * @param dto
     * @return
     */
    List<AppHisDocumentListVo> getHisDocumentList(AppHisDocQueryDto dto);

    /**
     * 移动端办案直通车-接收文书签字捺印数据
     *
     * @param saveDto
     * @return
     */
    Map<String, Object> receiveSignFile(AppDocumentSignSaveDto saveDto);


    /**
     * 拼接未签字信息
     */
    String getNotReasonStr(String notSignReason, String notSignReasonReplenish);

    /**
     * 根据文书目录编码查询关联文书
     *
     * @param request
     * @return
     */
    List<AppRelationDocumentListVo> getRelationDocumentListByCatalogCode(DocCommonHtmlRequest request);

    /**
     * 移动端办案直通车-文书id查询关联文书详情
     *
     * @param request
     * @return
     */
    AppRelationDocumentListVo getRelationDocumentDetailInfo(DocumentDetailQueryDto request);

    /**
     * 查询当事企业列表
     *
     * @param dto
     * @return
     */
    JSONArray getEntList(EntQueryDto dto);

    /**
     * 获取办案用户签名接口
     *
     * @param userId
     * @return
     */
    String getHandleSignData(String userId);

    /**
     * 获取文书配置
     *
     * @param catalogCode
     * @return
     */
    List<ConfigBusiParamDocumentInfo> getConfigBusiParamDocumentInfos(String catalogCode);

    /**
     * 获得文书模板
     *
     * @param partyType
     * @param configBusiParamDocumentInfos
     * @param caseType
     * @return
     */
    String getTemplateCodeByDocumentCatalogCode(List<ConfigBusiParamDocumentInfo> configBusiParamDocumentInfos, String partyType,String caseType);

    /**
     * 获取转换生成pdf并上传到oss的地址
     *
     * @param pdfRequest pdf格式的请求
     * @return {@link String }
     * @author shishengyao
     * @date 2022/02/25
     */
    Map<String, String> getConvertedPdfUrl(FillAndConvertToPdfRequest pdfRequest);

    /**
     * 文件签章并上传到oss
     *
     * @param queryDto 查询dto
     * @return {@link Map<String, String> }
     * @author shishengyao
     * @date 2022/03/07
     */
    String dealFileSeal(FileSealInfoQueryDto queryDto);

    /**
     * 描述： 获取上一次询问通知书地址
     *
     * @author: zhengqiang
     * @date: 2022/8/31
     * @return {@link String}
     **/
    String getHisNoticeOfEnquiryAddress();

    /**
     * 描述：修改通用文书
     *
     * @param saveDto 保存dto
     * @return {@link Map<String, Object> }
     * @author shishengyao
     * @date 2023/02/20
     */
    AppDocumentCommonModifyVo modifyDocumentInfo(AppDocumentCommonSaveDto saveDto);

    /**
     * 描述：根据文书id获取文书信息
     *
     * @param documentId 文书Id
     * @return {@link AppCaseBeforeDocumentDetailVo }
     * @author shishengyao
     * @date 2023/02/21
     */
    AppCaseBeforeDocumentDetailVo getAppDocumentDetailByDocumentId(String documentId);

    /**
     * 描述： 图片base64转成oss地址
     *
     * @author: zhengqiang
     * @date: 2023/5/22
     * @param: base64String
     * @return {@link String}
     **/
    String base64ToOssUrl(String base64String);

    String base64PdfToOssUrl(String base64String);

    /**
     * 调用pc的接口
     *
     * @param fileId
     * @return
     */
    String getFileByteByFileId(String fileId);

    /**
     * 重庆签名的
     * 
     * @param saveDto
     * @return
     */
    Map<String, Object> receiveSignFileId(AppDocumentSignDto saveDto);

    /**
     * 获取ocr数据
     *
     * @param file
     * @return
     */
    Result getOcrData(MultipartFile file);

    /**
     * token
     *
     * @return
     */
    String getToken();
    /**
     * 获取企业信息
     * @author liyafeng
     * @date 2023/9/1
      * @param dto
     * @return {@link Result}
     */
    Result getCqEntList(EntQueryDto dto);

    /**
     * 根据文书id发送短信通知
     *
     * @param dto 发送短信通知参数
     * @return true: 发送成功 false:发送失败
     */
    Result<String> sendSmsNotify(AppDocumentSendNotifyDto dto);


    /**
     * 获取关联任务列表
     * @param dto
     * @return
     */
    PageResponse<AssociatedTaskVo> getAssociatedTaskList(MyAssociatedTaskDto dto);

    /**
     * 获取直通车文书
     *
     * @param dto
     * @return
     */
    PageResponse<AppCaseDocumentVo> page(AppDocQueryDto dto);

    /**
     * 获取关联任务当事人列表
     * @param dto
     * @return
     */
    List<AssociatedTaskPartiesVo> getAssociatedTaskParties(AssociatedTaskPartiesDto dto);


    /**
     * 不签字提交
     * @param dto
     * @return
     */
    String submitWithoutSignature(SubmitWithoutSignatureDto dto);


    /**
     * 重新签字
     * @param dto
     * @return
     */
    String signAgain(SignAgainDto dto);


    /**
     * 删除文书
     * @param dto
     */
    Result<String> deleteDocument(DeleteDocumentDto dto);

    /**
     * 根据文书id，再次生成打印的sealPic
     *
     * @param documentId 文书id
     * @return 签章图片url
     */
    String generateSealPicAgain(String documentId);

    /**
     * 直通车文书：校验文书是否有关联任务且任务是否处于可以操作的状态
     * @param dto
     * @return
     */
    VerifyAssociatedTaskVo verifyAssociatedTask(@Validated VerifyAssociatedTaskDto dto);

    /**
     * 根据文书id获取文书的url
     *
     * @param documentId
     * @return
     */
    String getDocumentUrlByDocumentId(String documentId);

}

